#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include <malloc.h>
#include "plateau.h"

/* InitPlateau initialise le plateau de jeu (cad initialise jour_mois et type_case) */
Plateau InitPlateau () {
 Plateau p ;
  int i, j ;

    /* Initialise jour_mois à -2 pour toutes les cases du plateau */
    for(i=0 ; i<=3 ; i++) {
        for (j= 0 ; j<=7 ; j++) {
            p.plat[i][j].jour_mois = -2 ;
    }
        }

    /* Initialise type_case à -2 pour toutes les cases du plateau */
    for(i=0 ; i<=3 ; i++) {
        for (j= 0 ; j<=7 ; j++) {
            p.plat[i][j].type_case = -2 ;
    }
        }

    /* Initialise la première colonne du plateau */
    p.plat[0][0].jour_mois = 0 ;
    p.plat[1][0].jour_mois = 8 ;
    p.plat[2][0].jour_mois = 16 ;
    p.plat[3][0].jour_mois = 24 ;

    /* Initialise jour_mois de toutes les autres cases du plateau */
    for (j=1 ; j<8 ; j++) {
        p.plat[0][j].jour_mois = p.plat[0][j-1].jour_mois + 1 ; }

    for (j=1 ; j<8 ; j++) {
        p.plat[1][j].jour_mois = p.plat[1][j-1].jour_mois + 1 ; }

    for (j=1 ; j<8 ; j++) {
        p.plat[2][j].jour_mois = p.plat[2][j-1].jour_mois + 1 ; }

    for (j=1 ; j<8 ; j++) {
        p.plat[3][j].jour_mois = p.plat[3][j-1].jour_mois + 1 ; }


    /* Initialise les cases départ et jour de paye sur le plateau */
    p.plat[0][0].type_case = 0 ;
    p.plat[3][7].type_case = 0 ;

    /* Initialise les Dimanches sur le plateau (7, 14, 21 et 28 du mois) */
    p.plat[0][7].type_case = 1 ;
    p.plat[1][6].type_case = 1 ;
    p.plat[2][5].type_case = 1 ;
    p.plat[3][4].type_case = 1 ;

    /* Initialise les cases Courrier sur le plateau (1, 3, 5, 11, 16, 18, 24 et 27 du mois) */
    p.plat[0][1].type_case = 2 ;
    p.plat[0][3].type_case = 2 ;
    p.plat[0][5].type_case = 2 ;
    p.plat[1][3].type_case = 2 ;
    p.plat[2][0].type_case = 2 ;
    p.plat[2][2].type_case = 2 ;
    p.plat[3][0].type_case = 2 ;
    p.plat[3][3].type_case = 2 ;

    /* Initialise les cases Transaction sur le plateau (4, 8, 22 et 25 du mois) */
    p.plat[0][4].type_case = 3 ;
    p.plat[1][0].type_case = 3 ;
    p.plat[2][6].type_case = 3 ;
    p.plat[3][1].type_case = 3 ;

    /* Initialise les cases Faites Vos Ventes sur le plateau (49, 17, 20, 23 et 29 du mois) */
    p.plat[1][1].type_case = 4 ;
    p.plat[2][4].type_case = 4 ;
    p.plat[2][7].type_case = 4 ;
    p.plat[3][5].type_case = 4 ;

    /* Initialise la case Loterie sur le plateau (30 du mois) */
    p.plat[3][6].type_case = 5 ;

    /* Initialise les cases Faites Vos Ventes sur le plateau (49, 17, 20, 23 et 29 du mois) */
    p.plat[0][2].type_case = 6 ;
    p.plat[1][4].type_case = 6 ;
    p.plat[0][6].type_case = 6 ;
    p.plat[1][2].type_case = 6 ;
    p.plat[1][5].type_case = 6 ;
    p.plat[1][7].type_case = 6 ;
    p.plat[2][1].type_case = 6 ;
    p.plat[2][3].type_case = 6 ;
    p.plat[3][2].type_case = 6 ;

    return p;
}


/* NumCase calcule la valeur jour_mois de p->plat[x][y] et retourne -1 en cas d'erreur  */
int NumCase (Plateau* p, int x, int y) {

assert ( (x>-1) && (x<4) && (y>-1) && (y<8) ) ;

switch (x) {

case 0 :
	{return y;}

	break;

case 1 :
	{return (8+y);}

	break;

case 2 :
	{return (16+y); }

	break;

case 3 :
	{return (24+y);}

default:

	{return -1 ;}

}
}








